<?php

namespace think;

/**
 * 插件基类
 * Class Addns
 * @package think\addons
 */
abstract class Addons
{

    //必须实现安装
    abstract public function install();

    //必须卸载插件方法
    abstract public function uninstall();

    // 获取扩展项目的配置信息
    public function getConfig()
    {
        $file = env('addons_path') . $this->getAddonName() . '/config.php';
        if (!file_exists($file)) return false;
        return require_once $file;
    }

    // 获取扩展配置基本信息
    public function getManifest()
    {
        $file = env('addons_path') . $this->getAddonName() . '/manifest.php';
        if (!file_exists($file)) return false;
        return require_once $file;
    }

    // 获取继承者的类名称  不含Addon的小写字母名称
    protected function getAddonName()
    {
        $arr = explode('\\', get_class($this));
        return $arr[1];
    }

    // 创建安装成功标识文件
    protected function createInstallFile()
    {
        $file = env('addons_path') . $this->getAddonName() . '/install.lock';
        if (file_exists($file)) return true;
        return file_put_contents($file, 'dir', FILE_USE_INCLUDE_PATH);
    }

    protected function deleteInstallFile()
    {
        $file = env('addons_path') . $this->getAddonName() . '/install.lock';
        if (!file_exists($file)) return true;
        return unlink($file);
    }

    /**
     * 创建扩展
     * @param string $addonName
     * @param int $type 0单模块 1多模块
     * @param array $config 配置
     */
    public function createAddon($addonName = '', $type = 0, $config = [])
    {
        $addonName = strtolower($addonName);
        $filePath = env('addons_path') . $addonName;
        file_put_contents($filePath . '/config.php');
        
        
        


    }


}
    
